package com.ruoyi.course.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.course.domain.ExamInvoice;
import com.ruoyi.course.vo.ExamInvoiceVo;

import java.util.List;

/**
 * 发票申请Service接口
 *
 * @author Tellsea
 * @date 2025-10-14
 */
public interface IExamInvoiceService extends IService<ExamInvoice> {

    /**
     * 分页查询
     *
     * @param entity
     * @return
     */
    TableDataInfo<ExamInvoiceVo> queryList(ExamInvoiceVo entity);

    /**
     * 查询全部
     *
     * @param entity
     * @return
     */
    List<ExamInvoiceVo> queryAll(ExamInvoiceVo entity);

    /**
     * 根据ID查询
     *
     * @param id
     * @return
     */
    ExamInvoiceVo queryById(Long id);

    /**
     * 根据身份证号和班次ID查询是否已存在申请
     *
     * @param applicantIdCard 申请人身份证号
     * @param classId 班次ID
     * @return true-已存在，false-不存在
     */
    boolean existsByIdCardAndClassId(Long userId, Long classId);

    /**
     * 查询我的发票申请记录列表（包含发票抬头信息）
     *
     * @param userId 用户ID
     * @return 发票申请记录列表
     */
    List<ExamInvoiceVo> queryMyInvoiceList(Long userId);

    /**
     * 分页查询我的开票记录（包含发票抬头信息）
     *
     * @param userId 用户ID
     * @return 分页结果
     */
    TableDataInfo<ExamInvoiceVo> queryMyInvoicePage(Long userId);

}
